From: Cosimo Cecchi Date: Mon, 31 Jul 2017 15:17:35 +0000 (+0100) Subject: background: use of CHANGES_DONE_HINT events to avoid reloads X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~188 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a432653c878e0468a6d92d748ee1f831cb7a6c11;p=gnome-shell.git background: use of CHANGES_DONE_HINT events to avoid reloads Instead of potentially loading a background mid-way when it changes, and loading it again for every file monitor event, leverage CHANGES_DONE_HINT events, which allow us to ignore CREATED and CHANGED signals from the file monitor. https://bugzilla.gnome.org/show_bug.cgi?id=747794 --- diff --git a/js/ui/background.js b/js/ui/background.js index 681a5feaa..1c2b83bae 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -154,8 +154,12 @@ var BackgroundCache = new Lang.Class({ let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); monitor.connect('changed', - Lang.bind(this, function() { - this.emit('file-changed', file); + Lang.bind(this, function(obj, file, otherFile, eventType) { + // Ignore CHANGED and CREATED events, since in both cases + // we'll get a CHANGES_DONE_HINT event when done. + if (eventType != Gio.FileMonitorEvent.CHANGED && + eventType != Gio.FileMonitorEvent.CREATED) + this.emit('file-changed', file); })); this._fileMonitors[key] = monitor;